package 动态规划;

import java.util.Scanner;

public class 整数划分 {

    public static int bfs(int n,int m){
        if (m==1)
            return 1;
        if (n==1)
            return 1;
        if (n==m)
            return 1+bfs(n,n-1);
        if (n<m)
            return bfs(n,n);
        //n>m
        return bfs(n-m,m)+bfs(n,m-1);
    }
    //动态规划
    public static int bfs(int n){
        int[][] dp = new int[n + 1][n + 1];
        for (int i = 1; i <=n ; i++) {
            dp[i][1]=1;
            dp[1][i]=1;
        }
        for (int i = 1; i <=n ; i++) {
            for (int j = 1; j <=n ; j++) {
                if (i==j)
                    dp[i][j]=1+dp[i][j-1];
                if (i<j)
                    dp[i][j]=dp[i][i];
                if (i>j)
                    dp[i][j]=dp[i-j][j]+dp[i][j-1];
            }
        }
        return dp[n][n];
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int i = bfs(sc.nextInt());
        System.out.println(i);
    }
}
